#ifndef COMMAND_BASE_H
#define COMMAND_BASE_H

#include "Commands/Command.h"
#include "Subsystems/BallFeeder.h"
#include "Subsystems/TubeGate.h"
#include "Subsystems/AirCompressor.h"
#include "Subsystems/DigitalCamera.h"
#include "Subsystems/DriveDirectionIndicator.h"
#include "Subsystems/DriveTrain.h"
#include "Subsystems/FlyWheels.h"
#include "Subsystems/GearBox.h"
#include "Subsystems/RampArm.h"
#include "Subsystems/Tube.h"

#include "OI.h"


/**
 * The base for all commands. All atomic commands should subclass CommandBase.
 * CommandBase stores creates and stores each control system. To access a
 * subsystem elsewhere in your code in your code use CommandBase.examplesubsystem
 */
class CommandBase: public Command {
public:
	CommandBase(const char *name);
	CommandBase();
	static void init();
	// Create a single static instance of all of your subsystems
	static BallFeeder *ballFeeder;
	static TubeGate *tubeGate;
	static TheAirCompressor *compressor;
	static DigitalCamera *digiCam;
	static DriveDirectionIndicator *direction;
	static DriveTrain *drive;
	static FlyWheels *flyWheels;
	static GearBox *transmission;
	static RampArm *rampArm;
	static Tube *tube;
	
	static OI *oi;
};

#endif
